package com.ryujung.hash.leetCode_383;

import java.util.HashMap;
import java.util.Map;

class Solution {
    /**
     * 将note中的字符和出现次数存入map
     * 再去遍历杂志，如过有符合的字符，就将map中的次数-1，次数为0则删除该字符
     *
     * 每次删除时，判断map是否已经为空，为空直接返回true
     * 如过遍历完杂志，map不为空，返回false
     */
    public boolean canConstruct(String ransomNote, String magazine) {
        Map<Character, Integer> map = new HashMap<>();
        for (char c : ransomNote.toCharArray()) {
            map.put(c, map.getOrDefault(c, 0) + 1);
        }
        char[] chs = magazine.toCharArray();
        for (int i = 0; i < magazine.length(); i++) {
            if(map.containsKey(chs[i])){
                if(map.get(chs[i])==1) {
                    map.remove(chs[i]);
                    if(map.isEmpty()) return true;
                }else{
                    map.put(chs[i], map.get(chs[i]) - 1);
                }
            }
        }
        return false;
    }
}